Skip to content

Feat/async git improvements#20

Merged
gallayl merged 3 commits into
developfrom
feat/async-git-improvements
Jun 1, 2026
Merged

Feat/async git improvements#20
gallayl merged 3 commits into
developfrom
feat/async-git-improvements

Conversation

@gallayl
Copy link
Copy Markdown
Contributor

@gallayl gallayl commented Jun 1, 2026

🚀 What

Replaces promisify(execFile) across the service layer with a spawn-based runCli helper that does cross-platform process-group kills, captures stderr into errors, and forces non-interactive env for git/gh. Adds three injector-resolved Semaphore pools (GitOperationLimit / InstallOperationLimit / BuildOperationLimit, defaults 10 / 3 / 1) so a long build never blocks a quick git fetch. Consolidates two ad-hoc git ls-remote --exit-code callers behind GitService.lsRemote.

🐛 Why

execFile's timeout only SIGTERMs the parent — grandchildren (credential helpers, ssh, git-remote-https, GUI askpass) kept the inherited stdio pipes open, so the promise could stay pending for ~60 s past the nominal timeout with a bare Command failed: …\n and no stderr (nodejs/node#2098). Same shape blocked gh auth status when a stale token tried to open an interactive browser flow.

✅ Tests

  • New: run-cli.spec.ts, operation-limits.spec.ts, git-service-runner.spec.ts (env hardening, timeout/kill, GitOperationLimit queueing).
  • Extended: one-shot-command-runner.spec.ts (install/build pool serialization + cross-pool independence), validate-repo-action.spec.ts, check-prerequisite-action.spec.ts (migrated mocks).

@gallayl gallayl merged commit 81ed3a2 into develop Jun 1, 2026
6 checks passed
@gallayl gallayl deleted the feat/async-git-improvements branch June 1, 2026 15:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant